import java.util.Arrays;
import java.util.Scanner;

public class Exercise {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        long  a = input.nextLong();
        long  b = input.nextLong();
        long comax = 0;
        long comin = 0;
        long k = a * b;
        while (a != 0 && b != 0) {
            if (a > b) {
                a = a % b;
            }
            else {
                b = b % a;
            }
        }
        comax = a > b ? a : b;
        comin = k / comax;
        System.out.println(comax + comin);
    }
    public static void main13(String[] args) {
        Scanner input = new Scanner(System.in);
        int n = input.nextInt();
        int k = 0;
        int z = 0;
        if (n > 12) {  //n大于12说明电梯一次运不完
            if (n % 12 == 0) {  //n % 12等于0说明电梯装满人了并且没有剩下人
                z = n / 12;  //将n除12的值赋给z，得到坐电梯的次数
                k = z * 4;   //电梯每次上和下用掉的时间*做电梯的次数就是上楼的时间
            } else {      //还有人没有运完
                z = n / 12;//坐电梯的次数
                k = z * 4 + 2;//因为还有人没有运完，所以电梯还要再运上去一次，也就是加两分钟
            }
        } else if (n == 12) {  //n等于12说明电梯一次正好可以运完
            k = 4 + 2;//将前面的人运完后再运小乐乐，也就是4+2分钟
        }
        else{ //n小于12说明电梯在一次可以运完的情况下，而且没有装满，所以小乐乐可以跟着上去
            // k = 2;//k就是小乐乐上楼的时间
        }
        System.out.println(k);//上楼的时间
    }

    public static void main12(String[] args) {
        Scanner input = new Scanner(System.in);
        double r = input.nextDouble();
        double h = input.nextDouble();
        double sum = 0.0;
        double v = 0.0;
        System.out.println((int) (10000 / (3.14 * h * r * r)) + 1);
    }
    public static void main11(String[] args) {
        Scanner input = new Scanner(System.in);
        int r = input.nextInt();
        double s = 0.0;//统计面积
        s = 3.14 * (r * r);
        System.out.println(s);

    }
    public static void main10(String[] args) {
        Scanner input = new Scanner(System.in);
        double F = input.nextDouble();//华氏温度
        double C = input.nextDouble();//摄氏温度
        C = ((F - 32) * 5) / 9;//通过公式转化成摄氏温度
        System.out.println(C);//输出摄氏温度
    }
    public static void main9(String[] args) {
        Scanner input = new Scanner(System.in);
        double max = 0.0;//最高分
        double min = 100.0;//最低分
        double mean = 0.0;//平均值
        double sum = 0.0;//求和
        double[] score = {77.1, 88.1, 76.1, 56.1, 87.1, 98.1, 55.1, 94.1, 39.1, 96.1};
        //求和
        for (int i = 1; i <= score.length - 1 ; i++) {
            sum += score[i];
        }
        for (int i = 1; i <= score.length - 1 ; i++) {
            if (score[i] > max) {
                max = score[i];
            }
            if (score[i] < min) {
                min = score[i];
            }
        }
        mean = sum / score.length;
        System.out.println(max);
        System.out.println(min);
        System.out.println(mean);
    }

    public static void main8(String[] args) {
        int count = 0;//记录9的个数
        for (int i = 1; i <= 100 ; i++) {
            if (i % 10 == 9) {
                //看个位是不是9
                count++;
            }else if (i / 10 == 9) {
                //看十位是不是9
                count++;
            }
        }
        System.out.println(count);
    }
    public static void bubbleSort(int[] array) {
        //i控制趟数
        for (int i = 0; i < array.length-1; i++) {
            //优化：检查某一趟之后，是否有序了？
            boolean flg = false;
            //array.length-1-i 优化的是  每一趟比较的次数
            for (int j = 0; j < array.length-1-i; j++) {
                if(array[j] < array[j+1]) {
                    int tmp = array[j];
                    array[j] = array[j+1];
                    array[j+1] = tmp;
                    flg = true;
                }
            }
            if(flg == false) {
                return;
            }
        }
    }

    public static void main7(String[] args) {
        int[] array = {1, 2, 3, 4, 5, 6 };
        bubbleSort(array);
        System.out.println(Arrays.toString(array));
    }
    public static void main6(String[] args) {
        int[] array = new int[]{6, 5, 4, 3, 2, 1};
        //输出排序前的array数组
        System.out.print("排序前：");
        System.out.println(Arrays.toString(array));
        //调用BubbleSort类中的sort方法对array数组进行排序
        Arrays.sort(array);
        //输出冒泡排序后的array数组
        System.out.print("排序后：");
        System.out.println(Arrays.toString(array));
    }

    /**
     * @project 冒泡排序 - 升序
     **/
   public static void bubbleSort1(int[] array) {
        //i控制趟数
        for (int i = 0; i < array.length-1; i++) {
            //优化：检查某一趟之后，是否有序了？
            boolean flg = false;
            //array.length-1-i 优化的是  每一趟比较的次数
            for (int j = 0; j < array.length-1-i; j++) {
                if(array[j] > array[j+1]) {
                    int tmp = array[j];
                    array[j] = array[j+1];
                    array[j+1] = tmp;
                    flg = true;
                }
            }
            if(flg == false) {
                return;
            }
        }
    }

    public static void main5(String[] args) {
        int[] array = {6, 5, 4, 3, 2, 1};
        bubbleSort1(array);
        System.out.println(Arrays.toString(array));
    }
    public static void main4(String[] args) {
        int[][] array = new int[2][];
        array[0] = new int[20];
        array[1] = new int[10];
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array[i].length; j++) {
                System.out.print(array[i][j] + " ");
            }
            System.out.println();
        }
    }
    public static void main3(String[] args) {
        for (int i = 1000; i <= 2000 ; i++) {
            //利用循环一个数一个数判断
            if ((i % 4 == 0 && i % 100 != 0) || i % 400 == 0) {
                System.out.println(i);
            }
            //不是的话这不需要输出
        }
    }
    public static void main2(String[] args) {
        for (int i = 100; i <= 200 ; i++) {
            for (int j = i + 1; j < 200 ; j++) {
                if (i % j == 0) {
                    //不是素数 - 不需要打印
                }
            }
            //程序走到这里说明内循环走完了都不能整除 - 是素数输出
            System.out.print(i + " ");
        }
    }
    public static void main1(String[] args) {
        Scanner input = new Scanner(System.in);
        //输入
        int year = input.nextInt();
        if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
            System.out.println("Is leap year");
        }else {
            System.out.println("Is not leap year");
        }
    }
}
